﻿Public Class SerialMethod

#Region "Declaracion"

    Public Shared ReadOnly Property SerialPc() As String
        Get
            Try
                Dim Serial As New SerialObj

                For Each s As String In EncriptarObj.GetInformations("C:\")
                    Serial.Serial &= s
                Next

                Return EncriptarObj.EncryptString(Serial.Serial, SerialObj.Seed)

            Catch ex As ReglaNegociosObjetosException
                Throw New ReglaNegociosMetodosException(My.Resources.ResMensajes.ErrorAlObtenerElSerialDeLaPC, ex)
            Catch ex As Exception
                Throw New ReglaNegociosMetodosException(String.Format(My.Resources.ResMensajes.ErrorDesconocido, ex.Message), ex)
            End Try
            Return ""
        End Get
    End Property

#End Region

#Region "Funciones"

    Public Shared Function VerificarSiYaSeIngresoElSerial() As Boolean
        Dim Serial As New SerialObj

        For Each s As String In EncriptarObj.GetInformations("C:\")
            Serial.Serial &= s
        Next

        Serial.Encriptado = EncriptarObj.EncryptString(Serial.Serial, SerialObj.Seed)

        Try
            Dim SerialDb As SerialObj = DataFactory.Serial.ConsultarSerial(Serial)

            If DataFactory.Serial.ComputadoraYaRegistrada(Serial) Then
                If Serial.Serial = SerialDb.Serial Then
                    GrabarSerial()
                    Return True
                Else
                    If SerialDb.Trial = True Then
                        If Convert.ToDateTime(EncriptarObj.DecryptString(SerialDb.FechaIngreso, SerialObj.Seed)).AddMonths(1) <= Now.ToShortDateString Then
                            SerialObj.DiasDePrueba = 999999 'Termino los dias de pruebas
                            Return False
                        Else
                            SerialObj.DiasDePrueba = Convert.ToDateTime(EncriptarObj.DecryptString(SerialDb.FechaIngreso, SerialObj.Seed)).AddMonths(1).Subtract(Now.ToShortDateString).Days
                            Return True
                        End If
                    End If
                    Return False
                End If
            Else
                GrabarPcNueva()
                Return False
            End If

        Catch ex As SqlException
            Throw ex
        Catch ex As AccesoDatosException
            Throw New ReglaNegociosMetodosException(My.Resources.ResMensajes.ErrorComprobarSiYaExsteElSerial, ex)
        Catch ex As ReglaNegociosObjetosException
            Throw New ReglaNegociosMetodosException(My.Resources.ResMensajes.ErrorComprobarSiYaExsteElSerial, ex)
        Catch ex As Exception
            Throw New ReglaNegociosMetodosException(String.Format(My.Resources.ResMensajes.ErrorDesconocido, ex.Message), ex)
        End Try
    End Function

    Public Shared Function VerificarSerial(ByVal SerialIngresado As String) As Boolean
        Dim Serial As New SerialObj

        For Each s As String In EncriptarObj.GetInformations("C:\")
            Serial.Serial &= s
        Next

        Try
            If SerialIngresado = Serial.Serial Then
                GrabarSerial()
                Return True
            End If

            If SerialIngresado = "TRIAL" Then
                GrabarSerial(True)
                Return True
            End If

        Catch ex As SqlException
            Throw ex
        Catch ex As AccesoDatosException
            Throw New ReglaNegociosMetodosException(My.Resources.ResMensajes.ErrorVerificarSerial, ex)
        Catch ex As ReglaNegociosObjetosException
            Throw New ReglaNegociosMetodosException(My.Resources.ResMensajes.ErrorVerificarSerial, ex)
        Catch ex As ReglaNegociosMetodosException
            Throw New ReglaNegociosMetodosException(My.Resources.ResMensajes.ErrorVerificarSerial, ex)
        Catch ex As Exception
            Throw New ReglaNegociosMetodosException(String.Format(My.Resources.ResMensajes.ErrorDesconocido, ex.Message), ex)
        End Try
    End Function

#End Region

#Region "Procedimientos"

    Public Shared Sub GrabarPcNueva()
        Try
            Dim Serial As New SerialObj

            For Each s As String In EncriptarObj.GetInformations("C:\")
                Serial.Serial &= s
            Next

            Serial.Encriptado = EncriptarObj.EncryptString(Serial.Serial, SerialObj.Seed)
            Serial.FechaIngreso = EncriptarObj.EncryptString(Serial.FechaIngreso, SerialObj.Seed)

            DataFactory.Serial.InsertarSerial(Serial)

        Catch ex As SqlException
            Throw ex
        Catch ex As AccesoDatosException
            Throw New ReglaNegociosMetodosException(My.Resources.ResMensajes.ErrorAlRegistrarPcNueva, ex)
        Catch ex As ReglaNegociosObjetosException
            Throw New ReglaNegociosMetodosException(My.Resources.ResMensajes.ErrorAlRegistrarPcNueva, ex)
        Catch ex As Exception
            Throw New ReglaNegociosMetodosException(String.Format(My.Resources.ResMensajes.ErrorDesconocido, ex.Message), ex)
        End Try
    End Sub

    Public Shared Sub GrabarSerial(Optional ByVal Trial As Boolean = False)
        Try
            Dim Serial As New SerialObj

            With Serial
                For Each s As String In EncriptarObj.GetInformations("C:\")
                    .Serial &= s
                Next

                If Trial = True Then
                    .Trial = True
                Else
                    .Trial = False
                End If

                .Encriptado = EncriptarObj.EncryptString(.Serial, SerialObj.Seed)

            End With

            DataFactory.Serial.ActualizarSerial(Serial)

        Catch ex As SqlException
            Throw ex
        Catch ex As AccesoDatosException
            Throw New ReglaNegociosMetodosException(My.Resources.ResMensajes.ErrorAlRegistrarSerial, ex)
        Catch ex As ReglaNegociosObjetosException
            Throw New ReglaNegociosMetodosException(My.Resources.ResMensajes.ErrorAlRegistrarSerial, ex)
        Catch ex As Exception
            Throw New ReglaNegociosMetodosException(String.Format(My.Resources.ResMensajes.ErrorDesconocido, ex.Message), ex)
        End Try
    End Sub

#End Region

End Class
